﻿/* Inserir profissional e login juntos
Recebe parametro:
	- todos os campos do profissional (exceto o codigo) e
	- login
	- senha (gerada automaticamente por uma trigger na tabela USER)
*/	

CREATE OR REPLACE FUNCTION fn_inserir_profissional(
    xcpf dm_cpf,
    xnome dm_nome,
    xfantasia dm_nome2,
    xsexo character(1),
    xfonefixo dm_telefone,
    xfonecel dm_telefone,
    xendereco dm_local,
    xbairro dm_local,
    xcidade dm_local,
    xuf dm_uf,
    xrg_num dm_rg,
    xrg_org_exp character(6),
    xrg_data_exp date,
    xcarteiraprofissional character varying(14),
    xcnh_registro character varying(12),
    xcnh_cat character varying(10),
    xcnh_vencto date,
    xdatanascimento date,
    loginUsers character varying(10),
    senhaUser character varying(10)
) RETURNS boolean AS $$
DECLARE
	codprof integer;
BEGIN
	INSERT INTO profissional (
cpf,
nome,
fantasia,
sexo,
fonefixo,
fonecel,
endereco,
bairro,
cidade,
uf,
rg_num,
rg_org_exp,
rg_data_exp,
carteiraprofissional,
cnh_registro,
cnh_cat,
cnh_vencto,
datanascimento,
alocado)
	VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,false);

	if not FOUND then
		return found;
	end if;

	select into codprof codprofissional from profissional where cpf = $1;

	INSERT INTO users (nome,tipo,codigo,ativo,login, senha) values (xnome,'P',codprof,true,loginUsers, senhaUser);

	return found;
END;
$$ LANGUAGE plpgsql;


/* Inserir cliente e login juntos
Recebe parametro:
	- todos os campos do cliente (exceto o codigo) e
	- login
	- senha (gerada automaticamente por uma trigger na tabela USER)
*/	

CREATE OR REPLACE FUNCTION fn_inserir_Clientes(
    xnomecli dm_nome,
    xfantasia dm_nome2,
    xendereco dm_local,
    xbairro dm_local,
    xcidade dm_local,
    xuf dm_uf,
    xfonefixo dm_telefone,
    xfonefax dm_telefone,
    xfonecelular dm_telefone,
    xemail dm_local,
    xhomepage dm_local,
    xtipo character(1),
    xdatanasctoabertura date,
    xcpfcnpj character varying(18),
    xrgie character varying(18),
    loginUsers character varying(10),
    senhaUser character varying(10)
) RETURNS boolean AS $$
DECLARE
	codcli integer;
BEGIN
	INSERT INTO cliente (
nomecli,
fantasia,
endereco,
bairro,
cidade,
uf,
fonefixo,
fonefax,
fonecelular,
email,
homepage,
tipo,
datanasctoabertura,
cpfcnpj,
rgie
)
	VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15);

	if not FOUND then
		return found;
	end if;

	select into codcli codcliente from cliente where cpfcnpj = $14 and rgie = $15;

	--INSERT INTO users (nome,tipo,codigo,ativo,login) values ($2,'C',codcli,true,$16);
	INSERT INTO users (nome,tipo,codigo,ativo,login, senha) values (xnomecli,'C',codcli,true,loginUsers, senhaUser);
	return found;
END;
$$ LANGUAGE plpgsql;
/*
select * from cliente;
begin 
select  fn_inserir_Clientes(
'Elias Gengivir', 
'Elias', 
'desconhecido', 
'nao se sabe', 
'nao se faz ideia', 
'PR',
'(22) 2222-2222', 
'(33) 3333-3333', 
'(23) 4444-4444', 
'elias@utfpr.edu.br', 
'www.google.com.br', 
'?',
'2011-05-01', 
'3333333fuck3333333', 
'222222222222222222',
'e.gengivir',
'senha'
);

select * from users;

delete from cliente where fantasia = 'Elias';
rollback
--*/